package Client;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;


public class ConnexionToServer{
	
	private PrintWriter m_out;
 	private BufferedReader m_in;
 	
 	private String m_adrServeur;
 	private int m_portServeur;
 	
 	private String m_listeUsers;
 	
 	private Rafraichissement m_rafraichissement;
 	
 	 //constructeur
 	public ConnexionToServer(String adrServeur, int portServeur, String listeUsers)
 	{
 		m_adrServeur = adrServeur;
 		m_portServeur = portServeur;
 		
 		m_listeUsers = listeUsers;
 		
 		m_out = null;
 		m_in =null; 
 		
 		m_rafraichissement = null;
 	}
 	
 	 //demande de connexion au serveur si le login et mot de passe valid return la liste de clients connectés
 	 // sinon return un string "noconnecte"
    public	String connexion(String  loginETpassword)
    {
    	String listeUsersConnectes = "noconnecte";
    	try{
    		  //initialisation du socket de communication 
    	     Socket socket = new Socket(m_adrServeur, m_portServeur); 
    	     m_out = new PrintWriter(socket.getOutputStream(), true);
    	     m_in = new BufferedReader( new InputStreamReader(socket.getInputStream()));
    	     
    	     //envoie de la demande
    	     m_out.println("connexion");
    	     
    	     //envoie du login et du mot de pass
    	     m_out.println(loginETpassword);
    	     
    	     //attente de la validation de la connexion
    	     String reponse = m_in.readLine();
    	     if(reponse.equals("connecte"))
    	     {
    	    	listeUsersConnectes = m_in.readLine(); 
    	    	
    	    	//reception du port de rafraichissement
    	    	String portRafraichissement = m_in.readLine(); 
    	    	m_rafraichissement = new Rafraichissement(m_adrServeur, Integer.parseInt(portRafraichissement), m_listeUsers);
    	     }
    	     
    	     m_out = null;
    	 	 m_in =null;
    	     
    	 	socket.close();
    	 	 
    	   }catch(Exception e)
    	        {
    		      System.err.println("Erreur de communication avec le serveur");
    	        }
    	return listeUsersConnectes;
    }
    	
    
         /**demande d'une adresse ip d'un interlocutaire. si je suis deconnecté la fonction return "noconnecte" 
            si mon interlocutaire n'est pas connecté la fonction return "" une chaine vide
            sinon elle me retourne l'adresse de mon interlocutaire */
 	public String demanderAdrIp(String monlogin, String loginInterlocutaire)
 	{
 	    String adrInterlocutaire="";
 		try{
	 		   //initialisation du socket de communication 
		     Socket socket = new Socket(m_adrServeur, m_portServeur); 
		     m_out = new PrintWriter(socket.getOutputStream(), true);
		     m_in = new BufferedReader( new InputStreamReader(socket.getInputStream()));
		     
		      //envoie de la demande
    	     m_out.println("adresse");
    	     
    	     //envoie de mon login
    	     m_out.println(monlogin);
    	     String reponseDemande = m_in.readLine();
    	     
    	     if(reponseDemande.equals("noconnecte"))
    	     {
    	    	 adrInterlocutaire = "noconnecte";
    	     }else{
    	    	      //envoie du login de l'interlocutaire
    	    	     m_out.println(loginInterlocutaire);
    	    	 
    	    	       //reception de l'adresse de l'interlocutaire
    	    	     adrInterlocutaire = m_in.readLine();
    	          }
    	     
    	     m_out = null;
    	 	 m_in =null;
    	     socket.close();
		     
 		}catch(Exception e)
        {
	      System.err.println("Erreur de communication avec le serveur");
        }
 	   	return adrInterlocutaire;
 	} 	

}
